﻿/*
 * db.hpp
 *
 *  Created on: 2016年12月6日
 *      Author: work
 */

#ifndef _DM_OS_DB_DB_HPP_
#define _DM_OS_DB_DB_HPP_

#include <dm/export.hpp>

#ifndef DM_API_OS_DB
#define DM_API_OS_DB DM_API_IMPORT
#endif

#include <dm/os/db/resultset.hpp>
#include <string>

namespace dm{
namespace os{

class DM_API_OS_DB CDb{
public:
	enum EDbType{
		DtSqlite,	//!< SQLite数据库
		DtMysql,	//!< MySql数据库
		DtPg		//!< PostgreSQL数据库
	};

	CDb( const char* dbName,const char* host="localhost" );
	virtual ~CDb();

	virtual EDbType dbType()=0;

    virtual bool isConnected()=0;

	virtual bool connect( const char* user,const char* pw )=0;
	virtual void disconnect()=0;

	virtual bool exec( const char* sql )=0;
	virtual CResultSet* query( const char* sql )=0;

	virtual CResultSet* getTables( const char* pattern )=0;
protected:
	std::string m_host;
	std::string m_dbName;
};

/**
 * 数据库工厂
 * 返回一个数据库类实例。失败返回空
 * engine:指定数据库引擎
 *  - sqlite3
 *  - mysql
 *  - postgresql
*/
CDb* createDb( const char* dbName,const char* host="localhost",const char* engine=NULL );

}
}



#endif /* INCLUDE_DM_OS_DB_DB_HPP_ */
